@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u ---------------------------------- From: Chuck Steinman / DataQue Acct: GEnie: DataQue.1 Date: May 16, 1990 Subj:T} Misc CBPP Information File: CBPPINFO.DOC ---------------------------------- Some information is derived from infoU}rmation contained in documents received from ChalkBoard, Inc. ---------------------------------- --------------------V}-------------- pad resolution (total): x-axis: 120 y-axis: 120 ---------------------------------- pad numric orW}ientation (x,y): --------------------- | 120,000 000,000 | || | || | || X} | | 120,120 000,120 | --------------------- ---------------------------------- DB-9 connector piY}nout: pin function pia --- ----------------- ----- 1 data from pad bit-0 2 clear to pad Z} bit-1 3 clock to pad bit-2 4 sense from pad bit-3 5 n/c 6 n/c 7 +5v supply to pad 8 [} ground to pad 9 n/c ---------------------------------- DB-9 plug (from pad) orientation: 5 4 3 2 \} 1 --------------------- \ o o o o o / \ o o o o / ----------------- 9 8 7 6]} ---------------------------------- Also included in this archive are two BASIC files which show how you can access^} the PowerPad with BASIC. CBPPPRG1.LST an 'all BASIC' file which shows the currently contacted X:Y coordinate o_}n the pad. CBPPPRG2.LST basically the same file only with machine language USR calls to do the port manipulations.`} Both files are written in simple BASIC routines. Yes, there are a multitude of ways the code could be improved, bua}t I dont think it would make the examples that much cleared. Anyway... have fun! If you write an application usingb} this information, I (and others) would appreciate it being uploaded so we can all enjoy it! Thanks, Chuck --c}--------------------------------s) would appreciate it being uploaded so we can all enjoy it! Thanks, Chuck --"1000 REM ----------------------------1010 REM This is a demonstration1020 REM program for the ChalkBoard1030 REM PowerPad. e} It will scan the1040 REM pad, and report the contact1050 REM area to the screen.1060 REM ----------------------------10 f}70 REM Entered and modified by:1080 REM Chuck Steinman1090 REM DataQue Software1100 REM ----------------------------1110 g}REM Some information has been1120 REM provided by ChalkBoard, Inc.1130 REM1140 REM ----------------------------1150 REM S h}AVE "D:CBPPPRG1.LST"1160 REM ----------------------------1170 PRINT CHR$(125) : REM clear screen1180 PRINT:PRINT "Power Pa i}d Test Program"1190 GOSUB 1290 : REM init vars1200 GOSUB 1370 : REM init pad1210 GOSUB 1570 : REM check it1220 GOSUB 1700 j} : REM get & display1230 IF X = 0 AND Y = 0 THEN 12101240 PRINT"X = ";X;" Y =";Y1250 GOTO 12101260 REM ---------------- k}------------1270 REM initialize variables1280 REM ----------------------------1290 PORTB = 54016 : REM stick(0)1300 DDRA l}= PORTA : REM direction1310 PACTL = 54018 : REM control1320 SCAN = 0 : REM scan counter1330 RETURN1340 REM ------------- m}---------------1350 REM initialize pad1360 REM ----------------------------1370 SCAN = SCAN + 1 : IF SCAN = 5 THEN 137013 n}80 POKE PACTL,56 : REM direction mode1390 POKE DDRA,6 : REM set direction1400 POKE PACTL,60 : REM normal mode1410 POKE P o}ORTA,0 : REM default i/o1420 POKE PORTA,2 : REM clear line1430 POKE PORTA,0 : REM start scan1440 RETURN1450 REM ------ p}----------------------1460 REM error status1470 REM ----------------------------1480 PRINT:PRINT "Communications with the q}Power Pad"1490 PRINT "was unsuccessful. Check that the"1500 PRINT "pad is plugged into the first"1510 PRINT "joysti r}ck location!"1520 PRINT:PRINT1530 END1540 REM ----------------------------1550 REM check if a point is pressed1560 REM - s}---------------------------1570 COUNT = 0 : REM counter1580 SENSE = PEEL(PORTA) : REM check line1590 K = (INT(SENSE/16))*1 t}61600 SENSE = SENSE - K1610 SENSE = INT(SENSE/8) : REM get bit-31620 IF SENSE = 1 THEN 16401630 SCAN = 0: RETURN1640 COU u}NT = COUNT + 1 : IF COUNT < 50 THEN 15801650 GOSUB 13701660 GOTO 15701670 REM ----------------------------1680 REM get x v}and y values1690 REM ----------------------------1700 POKE PORTA,4 : REM clock line1710 POKE PORTA,0 : REM shift bit1720 w}GOSUB 1800 : Y = BYTE1730 GOSUB 1800 : X = BYTE1740 POKE PORTA,2 : REM clear1750 POKE PORTA,0 : REM normal1760 RETURN177 x}0 REM ----------------------------1780 REM load byte1790 REM ----------------------------1800 BYTE = 01810 FOR L = 1 TO 7 y} : REM get 7-bits1820 POKE PORTA,4 : REM clock high1830 POKE PORTA,0 : REM clock data1840 DTA = PEEK(PORTA) : GET PORT185 z}0 K = (INT(DTA / 2)) * 21860 DTA = DTA - K1870 IF DTA = 0 THEN BYTE = BYTE + 1281880 BYTE = BYTE / 21890 NEXT L1900 RETU {}RN1910 REM ---------------------------- K1870 IF DTA = 0 THEN BYTE = BYTE + 1281880 BYTE = BYTE / 21890 NEXT L1900 RETU )1000 REM ----------------------------1010 REM This is a demonstration1020 REM program for the ChalkBoard1030 REM PowerPad.}} It will scan the1040 REM pad, and report the contact1050 REM area to the screen.1060 REM ----------------------------10~}70 REM Entered and modified by:1080 REM Chuck Steinman1090 REM DataQue Software1100 REM ----------------------------1110 }REM Some information has been1120 REM provided by ChalkBoard, Inc.1130 REM1140 REM ----------------------------1150 REM S}AVE "D:CBPPPRG2.LST"1160 REM ----------------------------1170 PRINT CHR$(125) : REM clear screen1180 PRINT:PRINT "Power Pa}d Test Program-2"1190 GOSUB 1290 : REM set up m.l.1200 GOSUB 1450 : REM init pad1210 GOSUB 1580 : GET SENSE1220 GOSUB 166}0 : GET X/Y1230 IF X = 0 AND Y = 0 THEN 12101240 PRINT "X = ";X;" Y = ";Y1250 GOTO 12101260 REM -----------------------}-----1270 REM install machine code1280 REM ----------------------------1290 PRINT:PRINT"Please wait while I load M.L. code}";1300 DIM BYTE$(2),IP$(45),GS$(28),GY$(56),GX$(54)1310 IP = ADR(IP$): REM set numric var1320 GS = ADR(GS$): REM to addr o}f first1330 GY = ADR(GY$): REM char in string1340 GX = ADR(GX$): REM1350 ADDR = IP : N = 45 : GOSUB 17201360 ADDR = GS : }N = 28 : GOSUB 17201370 ADDR = GY : N = 52 : GOSUB 17201380 ADDR = GX : N = 52 : GOSUB 17201390 IC = 0 : REM counts init c}alls1400 PRINT:PRINT "Done Installing M.L. code"1410 RETURN1420 REM -----------------------------1430 REM initialize pad}1440 REM -----------------------------1450 IC = IC + 1: IF IC = 5 THEN 15101460 L = USR(IP)1470 RETURN1480 REM ----------}-------------------1490 REM error status1500 REM -----------------------------1510 PRINT:PRINT "Unable to talk to PowerPad}. Did"1520 PRINT "you plug pad into joysick port #1?"1530 PRINT:PRINT1540 END1550 REM -----------------------------15}60 REM get sense1570 REM -----------------------------1580 SENSE = USR(GS)1590 IF SENSE = 1 THEN 1610 : REM not there1600} IC = 0 : RETURN1610 GOSUB 1450 : REM re-init1620 GOTO 15801630 REM -----------------------------1640 REM get x and y val}ues1650 REM -----------------------------1660 Y = USR(GY)1670 X = USR(GX)1680 RETURN1690 REM ---------------------------}---1700 REM store ML routine1710 REM ------------------------------1720 PRINT "."1730 FOR L = ADDR TO ADDR+N-11740 READ }BYTE$1750 K = ASC(BYTE$(1,1))-481760 IF K > 9 THEN K = K - 71770 BYTE = K * 161780 K = ASC(BYTE$(1,1))-481790 IF K > 9 T}HEN K = K - 71800 BYTE = BYTE + K1810 POKE L,BYTE : NEXT L1820 RETURN1830 REM ------------------------------1840 REM dat}a for M.L. routines1850 REM -----------------------------1860 DATA 68,AD,02,D3,29,FB,8D,021870 DATA D3,A9,06,8D,00,D3,AD,0}21880 DATA D3,09,04,8D,02,D3,A9,001890 DATA 8D,00,D3,EA,EA,A9,02,8D1900 DATA 00,D3,A2,14,CA,D0,FD,8E1910 DATA 00,D3,EA,EA},601920 DATA 68,A2,FF,A0,FF,AD,00,D31930 DATA 29,08,F0,09,CA,D0,F6,881940 DATA D0,F3,4A,4A,4A,85,D4,A91950 DATA 00,85,D5,}601960 DATA 68,A9,04,8D,00,D3,A2,141970 DATA CA,D0,FD,8E,00,D3,EA,EA1980 DATA A0,07,A9,04,8D,00,D3,A21990 DATA 14,CA,D0,F}D,8E,00,D3,EA2000 DATA EA,AD,00,D3,4A,66,D4,882010 DATA D0,E8,A5,D4,49,FF,4A,852020 DATA D4,84,D5,602030 DATA 68,A0,07,A9},04,8D,00,D32040 DATA A2,14,CA,D0,FD,8E,00,D32050 DATA EA,EA,AD,00,D3,4A,66,D42060 DATA 88,D0,E8,A5,D4,49,FF,4A2070 DATA }85,D4,84,D5,A9,02,8D,002080 DATA D3,A2,14,CA,D0,FD,8E,002090 DATA D3,EA,EA,602060 DATA 88,D0,E8,A5,D4,49,FF,4A2070 DATA P; CELLS.ACT; Cells by Bill Kendrick; New Breed Software 10/10/1994; INCLUDE "D:RUNTIME.ACT"Byte REDUCTION,POWERSUPPLIE}S,BLINKCard Ch=756,Scrn=88Byte RAMTop=106,Key=764,Time=20,Con=53279Byte Col0=708,Col1=709,Col2=710,Col3=711Card SCByte }X,Y,C,C2,D,X2,Y2,Tries,KInt Array DX(4),DY(4)Proc SetUp() Graphics(17) ; 20 X 24 X 5 COLORS OF TEXT Ch=RAMTop}-16 ; FONT'LL GO HERE SC=(RAMTop-32)*256 ; ACTIVE SCREEN'LL GO HERE ; (VIEWED SCREEN IS 'S}crn') MoveBlock(Ch*256,224*256,1024) ; FONT!: MoveBlock(Ch*256+1*8,"=1 And Chr<=4) Then ; CELL CC=CC+64 ElseIf Chr=6 Then ;} BRICK CC=CC+128+64 ElseIf Chr=7 Or Chr=8 Then ; MITOSIZING CC=CC+128 Fi Poke(SC+Row*20+Col,CC) ; PLACE} ITReturnProc Draw() For Y=0 To 23 Do ; TOP/BOTTOM BOUNDARY Place(0,Y,6) Place(19,Y,6) Od For X=1 To 18 Do } ; LEFT/RIGHT BOUNDARY Place(X,0,6) Place(X,23,6) Od For Y=1 To 22 Do ; PLACE RANDOM CELLS AND BRICKS For X=}1 to 18 Do C=Rand(5)+1 If C=1 Then C=0 Fi If C=4 Then C=3 Fi If C=5 Then C=6 Fi Place(X,Y,C) } Sound(0,120-Y*5,10,9-X/2) Od Od For C=1 To POWERSUPPLIES Do ; PLACE RANDOM POWER SUPPLIES Do X=Rand(18})+1 Y=Rand(22)+1 Until (Peek(SC+Y*20+X)&63)<>5 Od Place(X,Y,5) Od Sound(0,0,0,0)ReturnProc Title() By}te LMar=82,RMar=83,Cur=752 Graphics(0) Col1=0 ; SCREEN BLACK... Col2=0 LMar=0 ; WIDEST MARGINS RMar=39} Cur=1 ; INVISIBLE CURSOR Put(125) ; CLS Print("󠔠렠") Print("}報") PrintE("This is a cellular reproduction demo.") PrintE("The laws of life are as follows}:") PutE() PrintE(" ۱ Cells need energy to survive") PrintE(" ۲ Cells can reproduce when they have") PrintE(" } 100% energy and there's a place to") PrintE(" reproduce onto") PrintE(" ۳ Cells suck energy from each other") Pr}intE(" and power supplies") PrintE(" ۴ Power supplies have unlimited") PrintE(" energy") PrintE(" ۵ Cells l}ose energy by living") PrintE(" ۶ Neither cells nor energy can") PrintE(" pass through bricks") PrintE(" ۷ The }plane in which the cells,") PrintE(" power supplies and bricks exist is") PrintE(" two-dimensional and right-angl}ed") PutE() PrintE("Press to quit the demo.") PrintE("Press to reselect options.") PutE() Print(" } Press any key to continue...") For C=0 To 150 Do Col1=C/10 ; EVENTUALLY WHITE TEXT Col2=C/20 }; EVENTUALLY GREY BACKGROUND Od Key=255 Do Until Key<>255 Od ; WAIT FOR KEYPRESS Key=255ReturnProc Options() } Byte LMar=82,RMar=83,Cur=752 Graphics(0) Col1=15 ; TEXT LIGHT BLUE Col2=128 ; BACKGROUND DARK BLUE LMar=0 } ; WIDEST MARGINS RMar=39 Cur=1 ; INVISIBLE CURSOR Put(125) ; CLS PutE() PutE() PutE() PrintE(" P}ress to change energy loss,") PrintE(" to change supplies,") PrintE(" or to begin...") Pu}tE() PutE() PrintE(" ") PutE() PutE() PrintE(" 庠 ")} Key=255 Do K=Key If K=42 Then REDUCTION=REDUCTION+5 If REDUCTION>200 Then REDUCTION=0 F}i Key=255 ElseIf K=62 Then POWERSUPPLIES=POWERSUPPLIES+2 If POWERSUPPLIES>30 Then POWERSUPPLIES}=2 Fi Key=255 Fi Position(33,8) PrintB(REDUCTION) Print(" ") Position(33,11) PrintB(PO}WERSUPPLIES) Print(" ") Until K=12 Od Key=255Return; ΛProc Main() Title() ; INTRO,CREDITS REDUCTION=}10 ; DEFAULTS POWERSUPPLIES=10 BLINK=1 Do Options() ; OPTIONS SetUp() ; SCREEN,FONT,COLORS Draw() } ; DRAW A SCREEN Key=255 Do If Con=6 Then ; TOGGLE POWER BLINKING BLINK=1-BLINK Col0=30 } Fi For Y=1 To 22 Do If BLINK=1 Then Col0=16+(Time&15) ; MAKE POWERS FLASH Fi } For X=1 to 18 Do C=Peek(SC+Y*20+X)&63 ; WHAT'S HERE? (&63 IGNORES COLOR) If Rand(250)=1 And C<=4 Then C=C-1 Place(X,Y,C) ; REDUCE LEVEL SOMETIMES Fi D=Ra}nd(4) ; LOOK SOMEWHERE X2=X+DX(D) Y2=Y+DY(D) C2=Peek(SC+Y2*20+X2)&63; WHAT'S THERE}? If C2=0 And C=4 Then ; IF LEVEL 4 AND THERE'S A BLANK, If D=0 Or D=2 Then ; MITOSIZE THAT WAY..} Place(X,Y,7) ; VERTICALLY Else Place(X,Y,8) ; HORIZONTALLY Fi} Else If (C>=1 And C<=3) Or C2=0 Then ; IF LOW ON POWER OR If C2>=1 And C2<=4 Then } ; GOING TO MITOSIZE. Place(X,Y,C+1) ; PUT IN YOU Place(X2,Y2,C2-1) ; OUT OF THE}M ElseIf C2=5 Then ; UNLESS A POWER.. Place(X,Y,C+1) ; IT IS INFINITELY POWERED..} Fi ElseIf C=7 Then ; IF MITOSIZING VERT, Tries=0 Do } D=Rand(2)*2 ; FIND A VERT PLACE TO ADD TO X2=X+DX(D) Y2=Y+DY(D) C2=Peek}(SC+Y2*20+X2)&63 If C2=0 Then Place(X,Y,3) ; YOU BACK TO NORMAL Place(X}2,Y2,3) ; NEW BABY Fi Tries=Tries+1 Until C2=0 Or Tries=20 Od ; NO LUCK? KEEP T}RYING If Tries>=10 Then ; I GIVE UP! Place(X,Y,3) ; BACK TO NORMAL Fi } ElseIf C=8 Then ; IF MITOSIZING HORZ, Tries=0 Do D=Rand(2)*2+1 ; FIND} A HORZ PLACE TO ADD TO X2=X+DX(D) Y2=Y+DY(D) C2=Peek(SC+Y2*20+X2)&63 } If C2=0 Then Place(X,Y,3) ; YOU BACK TO NORMAL Place(X2,Y2,3) ; NEW BABY } Fi Tries=Tries+1 Until C2=0 Or Tries=20 Od ; NO LUCK? KEEP TRYING If T}ries>=10 Then ; I GIVE UP! Place(X,Y,3) ; BACK TO NORMAL Fi Fi Fi } Od Sound(0,0,0,0) Od MoveBlock(Scrn,SC,512) ; UPDATE SCREEN IN ONE QUICK PASS K=Key } Until K=28 Or K=33 Od ; WAIT FOR ESC OR SPACE TO QUIT Until K=28 Od Key=255 Graphics(0)Return K=Key oIPbhihiHHȱȱ`8Hh` JE…¦ J`LJ` /J}"Ff ee&8LPJ /J_Wń児0 &&86.ń児8}儅充FfFf8LPJ J` Fj` &`p B V8l 1K VhhlEKHHJJJJ}hh`hhlEK `iDiE`HhGK`Hh`Hh`Hh` hKIHiDiE B HKHI} B HK`ԆՄ ؠ0ȑ8)ȑ`HhLK0LKII襢 Kiȑȩ-`H K KhLKH} K LhLK KLLL KLjL KLLL KLvLLjL KLLLvL KLL KL[L KLL KL[L KLL KLK KLL KLK KLL}ȩ$&*i0:iȑ`GK LFĆ>%>Ć5%/E)ԵH膇hCI4}HL]QiQ͸QL]Q! OQ LL] ] L ! OQ LL] ] LQI LR]}`L] 1X Q QQ >\ Q VIL,^8QQQͽQL bQILS^)eQͼQLaQ} \JQeQemQi NQ)?Q QͷQL^QL^;QL^8QQQQQ U QQQ }mQ*(mQQqQQ mQ*(mQQqQQ \JQeQemQi NQ)?QQ}L_QIL_Q QIL_QQ UL_QQ ULaQL_;QQL`QL_ͿQL_QiQQ U8Q}QQ UL`QIL`QiQQ ULaQILaQ Q \JQQ mQ*(mQQqQQ m}Q*(mQQqQQ \JQeQemQi NQ)?QQL`QQ UQQ UQQ} QIL$`Q L`QQ ULaQILaQ Q \JiQQ mQ*(mQQqQQ mQ}*(mQQqQQ \JQeQemQi NQ)?QQLaQQ UQQ UQQ Q}ILaQ LaQQ UQLX^ OQL1^QQYX QQQI QI!L^QIL^ oO``}]LaQ LaQQ UQLX^ OQL1^QQYX QQQI QI!L^QIL^ oO``CELLS.ACTCellsby Bill KendrickNew Breed Software 10/10/1994This is a cellular reproduction demo.Files included in the} ARChive are: CELLS.ACT - Action! sourcecode CELLS.COM - Compiled binary file (Action! not required) CEL}LS.DOC - This document fileThe laws of life are as follows:(The following laws are summarized inthe program..) [1] Cell }s need energy to survive. As a cell lives, it loses energy either by other cells sucking energy out of it, or  }by it just living. If a cell runs out of energy, it dies and disappears. When a cell is alive, it "strives"  } for energy, especially when it needs to reproduce. [2] Cells can reproduce when they have 100% energy and ther }e's a place to reproduce onto. When a cell has a blank space next to it, and it has full energy, it mitos }ises into two cells (usually, if there is still room once the mitosis has started). [3] Cells suck energy from eac}h other and power supplies. As a cell lives, it sucks energy from anywhere around it which it can. Power} supplies are an infinite source of energy, but since not all cells are next to a power supply, they 'suck' } energy, one at a time, from each other and eventually from the power supply. [4] Power supplies have unlimited} energy. [5] Cells lose energy by living. [6] Neither cells nor energy can pass through bricks. Bricks form b}arriers on the screen (and border the outer edge). Cells can't get energy from them, nor can they mitosize int}o them. [7] The plane in which the cells, power supplies and bricks exist is two-dimensional and right-angled. } When cells suck energy, they suck from either above, below, from the left or from the right. 45-degree angl}es don't exist here.While in the demo, Press [ESC] to quit the demo, or press [SPACE] to reselect options.When you've} been shown the above lawssummarized and the title, press anykey. You will see the option menu.Press [E] to change the r}ate at whichenergy is expended for life (ie, howquickly cells die off without a goodsupply of energy).Press [S] to chang}e how many powersupplies appear at the start of thedemo.Press [RETURN] to begin the demo (anew screen is randomly drawn }every timeyou return to the demo).The concept of this demo came to mewhile in my Biology class lecture whenthe professor} was explaining how cellsknow 'when to reproduce.' They cantell when they are being touched byother cells, so I said to m}yself "thiswould be an interesting little demo!"and ended up writing this today(October 10, 1994) because I was sickfrom }school! Anyways, I hope you enjoy my couple-of-hours-of-work. It was fun to write...I wish every type of program w}as thiseasy to code though... :)Have fun! -bill!Bill KendrickNew Breed Software59 Palm LaneNovat}o, California 94945-2574 USA(415) 897-6290kendrick@vax.sonoma.edukendrick@zippy.sonoma.edued Software59 Palm LaneNovat_; CHECK 8/17/85-12/21, A. B. Langdon; Determine length, CRC and checksum of file.; Also number of lines, for text file.;SE! }T $491=$4000 SET 14=$491^BYTE JMP=[$4C]: CARD Entry;INCLUDE "D:SYSLIB.ACT";INCLUDE "D:SYSIO.ACT"; Using channel 1, Close !!}caused "system error" with DOS 2.1 but not DOS XL.; ACS bbs has a block read (BLKIO.ACT) in machine code segments that is; !"}smaller and has a general purpose call to CIO. Here, I'll leave mine; as it illustrates use of the language and is just as f!#}ast.; First global ARRAY, other than BYTE ARRAY of length less than 257,; is placed AFTER rest of program (undocumented?).!$}BYTE ARRAY buffer(257) ; locate the buffer.CARD FLen, ; File length up to 64K i, CSum, NLinesBYTE OpOK, CSum0=CSum, !%}CSum1=CSum+1, textBYTE CIO_status ; global for CIO return value (per ACS convention)INCLUDE "CRC.ACT"CARD FUNC GetAD(BYTE !&}chan CARD addr, len) ; Block read TYPE IOCB=[BYTE hid,dno,com,sta CARD badr,put,blen BYTE aux1,au!'}x2,aux3,aux4,aux5,aux6] IOCB POINTER ic BYTE chan16 BYTE POINTER b chan16 = (chan&$07) LSH 4 ic = $340+chan16 ic.!(}com = 7 ; read ic.blen = len ic.badr = addr [$AE chan16 $20 $E456 $8C CIO_status] ; LDX chan, JSR CIO; STY CIO_status !)} FLen ==+ ic.blen ; this to RETURN is special to this application. IF CIO_status = $88 THEN EOF(chan)=1 IF (FLen&$!*}FF) = 0 THEN ; likely last sector of b = addr+ic.blen-1 ; a DOS 4 file. WHILE b^ = 0 DO b ==- 1 !+} ic.blen ==- 1 FLen == -1 OD FI FI b = addr FOR i = 1 TO ic.blen DO IF b^ = $9B THEN NLines ==!,}+ 1 FI CSum0 ==+ b^ CSum1 ==+ CSum0 updCRC(b^) b ==+ 1 ODRETURN (ic.blen)CARD FUNC GetCD(BYTE chan) ; Rea!-}d a word CARD c GetAD(chan,@c,2)RETURN (c)PROC FixFlSp(BYTE ARRAY FileSpec) IF FileSpec(2)<>': AND FileSpec(3)<>': TH!.}EN ; prefix "D:" to file name FileSpec^==+2 i=FileSpec^ WHILE i>2 DO FileSpec(i)=FileSpec(i-2) i==-1!/} OD FileSpec(1)='D FileSpec(2)=': FI; Could also convert to upper case: if >$60 then subtract $20.RETURNPROC Sys!0}Err(BYTE errno)PROC MyError(BYTE errno) IF errno=$80 THEN Error=SysErr Error(errno) FI ; break quits PrintF("error %I. T!1}ry again%E",errno) OpOK=0RETURNPROC End=*() [$68$AA$68$CD$2E8$90$5$CD$2E6$90$F3 $48$8A$48$60]; entry: PLA; TAX; PLA; CMP!2} MEMLO+1; BCC lab; CMP MEMTOP+1; BCC entry;; lab: PHA; TXA; PHA; RTS; Trace back thru RTS's and return to cartridge or DOS.!3}; From ACS bulletin board.PROC CHECK() CHAR ARRAY FileSpec(20) BYTE b, SHFLOK=$2BE CARD fwa, lwa, BufLen, MEMTOP=$2E5!4}, MEMLO=$2E7 BufLen=MEMTOP-$80-buffer SysErr=Error DO Print("File Spec=") SHFLOK=$40 ; upper case InputS(Fi!5}leSpec) IF FileSpec^=0 THEN END() FI FixFlSp(FileSpec) Close(2) OpOK=1 Error=MyError Open(2,FileSpec,4,0) U!6}NTIL OpOK OD Error=SysErr FLen=0 CSum=0 CRC=0 text=1 NLines=0; With DOS 4, this artifice ensures ; that each GetAD read!7}s one byte into; next sector, to anticipate EOF. BufLen ==& $FF00 GetAD(2,buffer,1) IF buffer(0) = $FF THEN text=0 FI!8} WHILE EOF(2) = 0 DO GetAD(2,buffer,BufLen) OD updCRC(0) updCRC(0) PrintF("End of file. %H bytes%E",FLen) PrintF!9}(" checksum=%H, CRC=%H%E",CSum,CRC) IF text THEN PrintF("%I lines%E",NLines) FI Close(2)RETURNPROC Main() devic!:}e=0 ; in case MAC/65 has been here SetupCRC() DO CHECK() PrintE(" (RETURN to end)") ODRETURNSET Entry=Main--!;}-------------------------------------------------------------------------MODULE; CRC.ACT 12/21/85 A. B. Langdon; Before!<} use, do SetupCRC().; For each data set, first set global CRC=0.; After calling updCRC(data) with all; data bytes, do up!=}dCRC(0) twice.; If CRCx is the CRC of a byte string,; then the CRC of that string, followed by; the hi and lo bytes of CR!>}Cx, is zero.CARD CRC: BYTE CRCl=CRC, CRCh=CRC+1CARD ARRAY CRCtable(256);PROC updCRCa(BYTE b) ; Action version; From C co!?}de by D. Krantz,; Dr. Dobb's Journal, June 1985.; Takes 99 jiffies for 2000 bytes.; BYTE i; CARD flag; FOR i=0 TO 7 DO;!@} flag = CRC&$8000; CRC ==LSH 1; IF b&$80 THEN CRC ==% 1 FI; IF flag THEN CRC ==XOR $1021 FI; b ==LSH 1; OD;RE!A}TURNPROC updCRC(BYTE b); Adaptation to this CRC of the algorithm; by W.D.Schwaderer, PC Tech Journal, 4/85.; Takes 14 jif!B}fies for 2000 bytes. CARD tem BYTE teml=tem, temh=tem+1 teml = b temh = CRCl CRC = tem XOR CRCtable(CRCh)RETURNPR!C}OC updCRCx=*(BYTE b); Machine language for Dr. Dobb's routine.; Takes 35 jiffies for 2000 bytes. [$85$A0] ; ST!D}A $A0 [$A2$8] ; loop over 8 bits [$26$A0] ; 3 byte shift of data [$2E CRC $2E CRC+1] ; !E}and CRC [$90$10 $AD CRC $49$21 $8D CRC] ; if carry, then XOR [$AD CRC+1 $49$10 $8D CRC+1] ; poly bits [$CA $D0$E3] !F} ; loopRETURNPROC SetupCRC() FOR i=0 TO $FF DO ; set up CRC table CRCl=0 CRCh=i updCRCx(0) CRCtable(i)=CRC!G} OD ; <0.1 sec.RETURNMODULE; end CRCset up CRC table CRCl=0 CRCh=i updCRCx(0) CRCtable(i)=CRC 7--------------------------------------------------------------------------- Utility CHECK provides a way to find the leng%I}th of a file (in bytes,and in lines for text files), and sorting out different versions of files (by comparing their CRC's)%J}. There are two files, CHECK.ACT and CRC.ACT. CRC shows a progression froma straight Action version, updCRCa, to a machi%K}ne language version updCRCxof updCRCa, to a straight Action version that uses a table but is fastest. If you compile and%L} write and executable file to be run without recompiling,consider removing the ; from SET $491... so it will not run on top %M}ofsomething else. If you have the run-time libraries SYSLIB and SYSIO, removethe ; from those INCLUDEs to make an executabl%N}e file that doesn't need theAction cartridge to run. At least with DOS XL, CHECK can be re-run without re-reading it off%O} diskby just typing 'RUN'. This is the purpose of 'Entry'. Other features useful in other programs include: fast%P} disk read error handling fixing up the DOS file name (force upper case, prefix D: if needed) locatin%Q}g the buffer run-time library does not set device=0; do it yourself in case.----------------------------------------%R}------------------------------ Bruce Langdon L-472 langdon%lll-lcc@lll-crg.ARPA Physics Department %S} "langdon#bruce%d"@lll-mfe.ARPA Lawrence Livermore National Laboratory Livermore, CA 94550 %T} (415) 422-5444UUCP: ..{gymble,ihnp4,seismo}!lll-crg!lll-lcc!langdon---------------------------------------------%U}------------------------------ ..{gymble,ihnp4,seismo}!lll-crg!lll-lcc!langdon---------------------------------------------$1000 .TITLE "CX85 NUMERIC KEYPAD HANDLER - Mac65 version" 1010 .PAGE "Dissasembled by Rich Andrews, Lockport, Il." 10)W}20 ; 1030 ;There was no copyright notice in the original 1040 ; code but one must assume it is public domain 1050 ;and was pr)X}obably written by Atari Inc. 1060 ;(no one else would have bothered!) 1070 ;once called by Basic do not call again 1080 ;Call)Y} thru basic with a X=USR(32512) 1090 ; 1100 .PAGE "CX-85 EQUATES" 1110 ;****************************** 1120 ;System equat)Z}es used 1130 ;****************************** 1140 ATRACT = $4D 1150 VVBLKD = $0224 1160 STRIG0 = $0284 1170 STRIG1 = $0285 11)[}80 CH = $02FC 1190 ALLPOT = $D208 1200 PORTA = $D300 1210 SETVBV = $E45C 1220 XITVBV = $E462 1230 ; 1240 ;****************)\}************* 1250 ;End of system equates 1260 ;***************************** 1270 ;The following is the keycode 1280 ;equate)]}s which are from CH. As 1290 ;per the Atari hardware manual. 1300 ;***************************** 1310 ; 1320 ; 1330 ESC = $)^}1C 1340 SPC = $21 1350 DEL = $34 1360 Y = $2B 1370 ZERO = $32 1380 ONE = $1F 1390 TWO = $1E 1400 THREE = $1A 141)_}0 FOUR = $18 1420 FIVE = $1D 1430 SIX = $1B 1440 SEVEN = $33 1450 EIGHT = $35 1460 NINE = $30 1470 PERIOD = $22 1480 MIN)`}US = $0E 1490 CR = $0C 1500 ; 1510 .PAGE "CX-85 HANDLER INSTALLATION ROUTINE" 1520 ;****************************** 153)a}0 ;This is the start of the installation routine 1540 ;****************************** 1550 ; 1560 ; 1570 .ORG $7F00 ;Sta)b}rt code just below GR.0 screen. 1580 PLA ;This routine is to be called by basic hence the PLA 1590 ;Remove the PL)c}A instruction for a stand alone file 1600 LDA VVBLKD ;Call with X=USR(32512) 1610 ;The installation routine could also b)d}e a M/L string with the rest 1620 ;of the code previously loaded in via DOS. 1630 STA EXIT+1 1640 LDA VVBLKD+1 1650 )e} STA EXIT+2 1660 LDY # VBICODE 1680 LDA #$07 ;Command to reset vbi pointers. 1690 J)f}SR SETVBV ;Install vbi routine into interrupt chain. 1700 RTS ;Return to caller. 1710 .PAGE "CX85 HANDLER LO)g}OKUP TABLE" 1720 ;****************************** 1730 LOOKUP ; This is the lookup table. This portion can be located )q}B%DOS SYSB*)DUP SYSBSCBPPINFODOCBdCBPPPRG1LSTB|CBPPPRG2LSTB;CELLS ACTB3CELLS COMBCELLS DOCB)CHECK ACTBHCHECK DOCB,VCX85 M65BCX85D COMBCX85D DOCBDDBRDMODLSTBNSNAP15M COMBSNAPSHOTTXTBXEP80BXECOMB XEP80HANCOM1740 ;in a different area in memory than the Main routine or the 1750 ;installation routine. 1760 ;**************************)r}**** 1770 .BYTE $0C,ESC 1780 .BYTE $14,SPC,$10,DEL,$18,Y 1790 .BYTE $1C,ZERO,$19,ONE,$1A,TWO 1800 .BYTE $1B,T)s}HREE,$11,FOUR,$12 1810 .BYTE FIVE,$13,SIX,$15,SEVEN 1820 .BYTE $16,EIGHT,$17,NINE,$1D 1830 .BYTE PERIOD,$1F,MINUS)t},$1E 1840 .BYTE CR 1850 BRK ;End of table delimiter 1860 ;***************************** 1870 ;By changing the)u} table one could define 1880 ;the keys on the CX85 to mean anything! 1890 ;How about some new functions to be accessed 1900 ;)v}through a wedge of some sort? Terminal 1910 ;program phone dialer? Maybe a bookkeeping 1920 ;program? As long as it is a pr)w}intable 1930 ;character it will work. Rich A. 1940 .PAGE "CX-85 HANDLER MAIN VBI ROUTINE" 1950 ;*************************)x}**** 1960 ;The vbi routine starts here. 1970 ;***************************** 1980 ;This portion can be located anywhere in mem)y}ory. 1990 ;***************************** 2000 VBICODE 2010 LDA STRIG1 ;trigger pressed? 2020 BNE SET2BYE ;no-go clr )z}buffer #2+exit. 2030 LDA #$00 2040 STA ATRACT ;kill attract mode 2050 LDA PORTA ;lets get some bits 2060 L){}SR A ;divide by 2 2070 LSR A ;divide it again 2080 LSR A ;ditto 2090 LSR A ;one more time)|} (Sam?) 2100 STA BUFR1 ;now stuff it in buffer 1 2110 LDA ALLPOT ;read all the pot lines 2120 AND #$08 ;if )}}it is >=8,then make it 0 2130 EOR #$08 ;if it is <8 then make it 8 2140 ASL A ;times 2 2150 ORA BUFR1 21)~}60 LDY #$00 2170 ;******************************* 2180 FINDIT 2190 CMP LOOKUP,Y 2200 BEQ FOUND ;found the code )}2210 INY 2220 INY 2230 LDX LOOKUP,Y 2240 BEQ EXIT 2250 BNE FINDIT 2260 ;****************************** )}2270 FOUND 2280 TAX 2290 INY 2300 LDA LOOKUP,Y 2310 CMP BUFR2 2320 BEQ PUTCHR 2330 STA BUFR2 2340 )} STA CH 2350 LDA #$30 2360 STA BUFR3 2370 BNE EXIT ;always exit 2380 ;****************************** 2390 SE)}T2BYE 2400 LDA #$C0 ;when trig1 is not pressed 2410 STA BUFR2 ;read will come back with $C0 2420 BNE EXIT )} ;always exit 2430 ;****************************** 2440 PUTCHR 2450 LDX BUFR3 2460 DEX 2470 BNE SET3BYE 2480 )} STA CH 2490 LDA #$06 2500 STA BUFR3 2510 BNE EXIT 2520 ;********************* 2530 SET3BYE 2540 STX BUFR3 25)}50 ;********************* 2560 EXIT 2570 JMP XITVBV ;see you next vbi 2580 ;********************* 2590 BUFR1 2600 .D)}S 1 ;reserve 1 byte 2610 ;********************* 2620 BUFR2 2630 .DS 1 ;reserve 1 byte 2640 ;*****************)}**** 2650 BUFR3 2660 .DS 1 ;reserve 1 byte 2670 ;********************* 2680 .END 2690 ;The original key layout)} is as 2700 ;follows 2710 ;----------------------- 2720 ; esc | 2730 ; 7 8 9 - | 2740 ; N 4)} 5 6 r | 2750 ; 1 2 3 e | 2760 ; Y 0 . t | 2770 ; | 2780 ;-------------)}---------- 2790 ; el> 1 2 3 e | 2760 ; Y 0 . t | 2770 ; | 2780 ;-------------(@CAAAiAAAAAAAmAAAmAAAAAAAAȭAAAAAAAA轓AAAmA-}AAmAAȭAAȭAA̝AƍAAAAAAA轞AAAmAAAmAAA̭A͊AAA̭AA͝Aй -}A AA A ƍAAAAAAAAέAϭA̭Aͱ̑AiAAAiAA8AAAAAAAAA A-}LAAiAAlA)*+#) O AA$A%AA \`-}HHHΩAϠ )Ψ͠ΪΠ ΨhhhlAΪx r-}02,дhЦΠ Уx(    и-}аШИB% Д4Ќ "Є8 iΩокx3>06 . &5-} еа4Ќ "Є8 iΩокx3>06 . &5,# Doc. file for CX85D.COM * UPDATE * - 2/20/91 CX85D is a Driver for the CX85 numeric keypad. It was writte1}n for use with Sparta Dos. It won't work with Atari dos. I have'nt tried it with anything but sparta. The progra1}m first loads at $4000. It then copys the cx85 code, 449 bytes, to lowmem. It is reset proof. The CX85 should be pl1}ugged into joystick port 2. cx85d command chart: KEY Cursor mode Numeric mode HIT Action 1} Action ------------------------------------ - switch mode switch mode to numeric to cursor 1} 1 down and left 1 2 down 2 3 down and right 3 4 left 1} 4 5 NO ACTION 5 6 right 6 7 up and left 7 8 up 1} 8 9 up and right 9 The following keys have the same actions in both modes: 0 = 01} . = . + (enter) = return esc = esc NO = speed up keyrep Delete = backspace1} w/del YES = slow down keyrep At start up the keypad will be in cursor control mode. Press the - key o1}n keypad to toggle to numeric & back. You have to hold it down for a second to switch. The best way to check if the ke1}ypad is in the correct mode is to hit the 5 key. If no action occurs, your in the cursor control mode. If a 5 show1}s up you are in numeric mode. I tried to duplicate the action of the debounce routine the CIO uses. This program1} should be compatible with programs that leave the VVBLKD interupt vector alone or follow the recommended methods for p1}reserving previously installed drivers. I would recommend loading any ramdisk and other sparta system drivers prio1}r to loading CX85D.COM. It is compatible with the other reloatable driver for sparta that I have uploaded previously1}. The X command is Not required when loading with the SDX cart. It will work with then Kyan pascal system and p1}rograms written with kyan. (make sure that lomem stays below $2000.) Your comments or suggestions would be 1}appriciated, Scott Armitage #72750,2237eofw $2000.) Your comments or suggestions would be 0<8182838485 REM Star Gemini 10X/XMM801 Printer Drivers,Disk File Output,ASCII Output Mods (c) 1993 Thomas J. Andrews865}88460 I=N1:MAX=12:TMP$=""4651020 POKE 764,255:CLOSE #N4:OPEN #N4,N8,Z,FNAME$:? #N4;"@A";CHR$(N8);:RETURN 1042104410505} POKE 752,N1:POSITION 13,12:? "FORMAT: Ԡ":POSITION 21,13:? "SIDEWAYS";:GOSUB 3401070 GOSUB 320:POSITION 27,N9:IF UPR=5}N1 THEN ? "Ԡ";:GOTO 10901130 ? " ֮ 480 dpl SINGLE SINGLE CENTER":? " REG. ";:IF NOT STAR THEN ? "720 dpl";:GOT5}O 11371133 IF STAR=N3 THEN ? " ";:GOTO 11371135 ? "960 fst";1137 ? " DOUBLE DOUBLE LEFT"1140 ? " 960 dpl TR5}IPLE FOUR RIGHT":IF STAR=N3 THEN ? " ";:GOTO 11451143 ? " 1920 dpl";1145 ? " MORE MORE";:POKE N82,N5}21170 MODE=YC-ITOP-(YC=21)+N5*(YC=20):IF STAR=N1 AND MODE=6 THEN MODE=N1:STAR=N61173 IF STAR=N3 AND (MODE=N6 OR MODE=N3) TH5}EN GOSUB 210:GOTO 11701175 LIM=640*(MODE=N6)+N960*(MODE=N1)+320*(MODE=Z)+1920*(MODE=N3):LIM0=LIM1600 SCR=SCR+320/H:GOSUB 295}40:FOR I=N1 TO HT/N8:? #N4;PCD$;CHR$(COLL);CHR$(COLH);PRNT$(N1,LIM)1690 CLOSE #N4:? "";:GOSUB 280:GOTO 28302080 GOSUB 10205}2100 GOSUB 2940:FOR J=N1 TO W:? #N4;PCD$;CHR$(COLL);CHR$(COLH);PRNT$(N1,LIM)2190 CLOSE #N4:? "";:GOSUB 280:GOTO 28302490 5}DIM DL7$(N210),DL8$(N210),SHADE$(96),DLI$(N16),PCD$(N99)2495 CLOSE #N4:OPEN #N4,N6,Z,"D:STAR":INPUT #N4;PCD$:STAR=N1:IF PCD$5}(LEN(PCD$))="S" THEN STAR=Z2496 IF NOT STAR THEN CLOSE #4:OPEN #N4,N6,2,"D:XMM801":INPUT #N4,PCD$:IF PCD$(LEN(PCD$))<>"S" TH5}EN STAR=N32840 POP :POP :POP :TRAP 2210:GOSUB 110:GOSUB 210:OP=YC-N8:IF STAR=N6 THEN STAR=N12850 ON OP GOSUB 550,610,630,805}0,28802880 GOSUB 280:POKE 752,N1:POSITION 13,12:? "DEVICE: Ҡ":POSITION 21,13:? " DISK ";2890 XC=21:YC=12:ITOP=YC:I5}BOT=13:ILEN=N8:IINC=N1:GOSUB 210:DEV=YC-N112900 FNAME$="P:":IF DEV=N2 THEN GOSUB 3602910 GOSUB 300:POSITION N11,N9:IF DEV=N5}1 THEN ? "Ҡ";:GOTO 10402920 ? FNAME$:GOTO 10402930 REM SET PRINTER MODE AND MARGIN2940 PCD$="":IF LMAR>Z THEN PCD$5}=" ":PCD$(LMAR)=PCD$:PCD$(N2)=PCD$2950 IF MODE=N6 THEN PCD$(LMAR+N1)="*":RETURN 2960 IF MODE=Z THEN PCD$(LMAR+N1)="K":RE5}TURN 2970 IF MODE=N1 AND STARZ THEN PCD$(LMAR+N1)="z"3000 RETURN TURN 4x ` `T``` B VjBD`E JK VЅҭѩhӢБhXХYѢ@9}ҩXЩҭ )eYъipӬ ұґТ ҝj ԍ ԍ ԭJJJJ ҭ``EՠL`9}եɛ`E:ppIUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUO򑎕YԎMMMMMMMMM9}MԎYMMM# by4om(untMMMYQRRRRRRRRRRRRRRRRRRRRRRRRRREY|S&indsupport9}S|Y|HJpqHJ|Y|HրJHրJ|Y|HրJH9}J|Y|LcalltheL|Y|>>>>>>>>>>>>>>>>>>>>>>>>>>|YZRRREQRRRC9}Y|qr|Y||Y||9}Y||Y|󍍗|Y(ome||(omeY9}ofZRRRRCofYros-4/3 4he7orks 4he7orks8%Y3napshotY9}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUY00,0-0.0Ҍҩ,0-0.0` ҍv0 |1ӠԠ9}ԠΠϠ ҍЭv0 `HHA0 0&00Ahh0 0` hh9} 0 0L0 0HH``J01䅳䅲 1 J`l` '1`%H$H`az`AZ9}i`ɀ0`ɀ)`T1 c1T1 c1`HJJJJ n1h)  0i6 0`h1h111 1L11H1H`(Px@h09}X HpZ }2 ZZL2]^Z12D 2Z) ` L2i@L28 $Z ^UcU(ȱ^] ^9}^_`cRUTT 2^] ^`TXhi(^Yii_^h_i^hXi^Yi_^(U^9}]^eU^_i_`T Xy1^Yy1_^eU^_i_`}~23 BHILV%3'3&3'3'3%3`<839}83`SH)Ӡ h`SH)Ӡ h`SH)Ӡ h`SH)9}Ӡ h`HH33333333Ȍ3 03hh`3494H494r464\4A4_4Q4U4s474]4B4`4R49}V4 1 ɛ~ 0 0`Ę~ 0йy4r4444s4444t4449}u444&x4x4 ;1v4 ;1v4y4y4`r45 545s45 5t455u4559}`r4L5s4M5t4S5X5G5u4T5Y5H5 `r455s455t4555u4555Ȣ9}0`r455s455t45u45` 555655 555> 1 01ɛ4~9}0:5Ȍ55 0Ӭ5̩~ 05𾩛5ș55эr45s4ٍt45u4 4م5 ٥Ԧ`I`I `9}I@`I`ө<`8ө өө`i```I`I`67I`I``h7i7j9}7h7 q7 p7 o7 n7 m7 l7 k7j7i7j78`` |1[-More-] 1 |9}1~~~~~~~~~`: |1}Hold down OPTION when loadingfor more information.` |1Documentaion for Snapshot Ver.1.5m 9} Snapshot (C) 1990 by Tom Hunt Snapshot version 1.5m uses thefilename of SNAP15M.COM. It iscompatable with 9}Sparta Dos 3.2. It isfor use when you want Sparta dos inBOTH snapshots. This version ofSnapshot saves and maintains th9}eentire 64k snapshot image. It shouldbe noted that any version of Snapshotthat has a 'm' at the end of theversion number 9}moves MEMLO up a bit,and belongs to the family of Snapshotprograms that this documentation filecovers. You cannot use 9}the Softbootutility with this version ofSnapshot. GENERAL INSTRUCTIONS r7 |1 Do not use RD.COM if using a 1289}kmachine. You may use the /E modifierwith RD.COM if using a 256k+ computerfor a 128k ramdisk. Load Snapshotfrom eithe9}r the command line or froma batch file. If ran from a batchfile, the batch execution willterminate when Snapshot is loaded9}.Snapshot should be the last entry inyour STARTUP.BAT file. You can usesecondary batch files to continueyour normal b9}ooting process ifnecessary after Snapshot is loaded. After loading Snapshot you mayswitch between them with eithershi9}ft/control/-, or by pressing theHELP key. You will hear a buzzingsound from your speaker when you dothis to let you kn9}ow that thesnapshot process is under way, andthat you should release the key. r7 |1 There are some applications when9}used with Snapshot that will eitherhang the computer, or knock outSnapshot. The most notable examplesof this are MOE a9}nd Express BBS. Ifthis occurs to you then try using theRehack utility. Documentation for telecom operations You can 9}use Snapshot version 1.5mwith Oasis bbs. You can use ߇it withExpress bbs, and with MOE if you usethe Rehack utility. Yo9}u may also useit with Bobterm. There is one basic problem whenusing Snapshot with telecom programsof any type. This p9}roblem is that thePokey chip needs to be reset forconcurreۈnt i/o after any disk r7 |1operations done in the 2nd snaps9}hot.You can tell that Pokey is set formodem i/o when you hear thathigh-pitched whine coming from yourspeaker. When you do9}n't hear thatwhine, you know that Pokey isn'tready for modem i/o܈׉, and any effortto get or put characters to/from them9}odem will hang the system. You MUSTfind a way for your particulartelecom application to reinitializePokey for modem i/o. D9}on't worry,where there is a will, there is away. (Creed of the Hacker,؉ӊ (the goodkind of hacker, that is)). If you are9}using a telecom program in bothsnapshots this will usually not be aproblem. A second basic problem when usinga bbs pr9}ogram, is that if you areworking in the 2nd snapshot, and a r7 |1call comesԊϋ in, you miss the 'CONNECT'message after s9}witching back to thebbs. So the bbs must determine byother methods what to set it's baudrate to. Oasis 4.3 bbs 9}instructions If working in the 2nd snapshotwith an application like Texpro, anЋˌda call comes in, this is what youm9}ust do to get the user online.Simply switch back to Oasis and hit acontrol-K. This will reset the bbs,and the user has to 9}call back in.This is very inelegant, but isnecessary because Oasis bbs (at leastversioňǍ 4.3) doesn't reset the modem9} r7 |1for concurrent mode after RING0.OASdoes it, initially. This isn't aproblem with Express bbs (see theparagraph coveri9}ng this). Whathappens after switching back to thebbs, is that Pokey has to bereinitialized. IȍÎ tried to reassemblethe 9}RING0 module so that I could getthe user online with ashift-control-I, but this wasunsatisfactory.If using MOE in the 2nd9} snapshotto run games for the bbs, pleaserefer to the TASKCOM.DOC andREHACK13.DOC files. I use thisĎ set upon my bbs t9}o run basic adventuregames from the bbs. Express bbs instructions (NOT the Pro one!) You must use the R9}ehack utility r7 |1in the snapshot you intend to runExpress bbs in. This is becauseExpress knocks out Snapshot, butR9}ehack takes care of all that. I havefound that the easiest way to preventthe problem with Pokey (not beinginitialized for 9}modem i/o after doingdisk i/o in the 2nd snapshot), is tojust hit the BREAK key afterswitching back to Express. Also, 9}if acall comes in while you are doingsomething in the 2nd snapshot, andyou switch back to Express, it seemsto get the use9}r online very well. MOE/Carina bbs instructions You must use the Rehack utilitybefore loading MOE. This is be9}causeMOE knocks out Snapshot. REHACK13.COMwill take care of that problem. Ihaven't tried Snapshot with Carina r7 |1bbs, 9}but have used it extensivly withMOE. Please refer to TASKCOM.DOC andEXAMPLE.BAS to see how to get the MOEenvironment confi9}gured afterswitching to it from Oasis bbs. Bobterm instructions If you want to switch out ofBobterm, I su9}ggest you do it from thefile menu. Bobterm will be ready toswitch back to concurrent i/o whenyou switch back to it. 9}Send shareware donations to:TOM HUNT1704 TWP. RD. 65JEROMESVILLE, OH.44840 r7 |1}Loading Snapshot 1.5m!`9}@@DL젣μRحA LӨ)xL9}өXhhh@ H$I%JK`Щεζη ҭLwة γ9}-@ ' Ӣ@@P -QJK-Ki@'  '-@Я@9} ӭ ӽ@)ӽ@@ ӭ@ɀо@ ӽ@@:}ɀ֩(M@6?ӭ)ӽ ӽ@@)ӭ(6?M(؍(M:}X6??ɀУэQ֝V Lw `JK`$c%dL$M%:}`xԭӍ)ӭH$I%hhhhhh H HHHHH N O L. @:}_bbɀ  ӽ@)ӽ@@ ӭ@ɀо @ɀ@:} Ә@) ؍XɀǭQѢVXԮLbppG :} $      $      #  v \:}+e̥̅i͠mȱm \̑ϥpZ[L̩@ͭέϩЩp` \8{okay gang, a while ago someone was asking about snapshot form CTH. later there was a post that said something to the effect >}that it would soon be posted to the archive. well, to make a long story short, I called CTH this afternoon and downloaded a> } snapshot15m. snapshot only works with spartados 3.2. with this version, you can not use a ram disk if you only have 128k> } of memory. snapshot uses the upper 64k of memory to store a "picture" of your system as it currently is. while not multi> } tasking, it does let you run two different programs at once (i.e. bobterm and textpro). as i understand it, for a s/w fee> } of $10, you can get a version of snapshot that will allow you to save 10 seperate images to your hard disk, for those of us> } that have them. snap15m.arc should be in the archive by the time you read this, try it out,and send me your comments, I tal>}ked to Tom today and he is interested in wht you have to say. the file is located in atari/8bit/new Mike Todd ments, I tal<q0+78v0w0υШȄ΢x̩0 L00 L0eТ D00 L00ϱ`ΥЅϥ Υ Θ Ѕ lB} L  H  {hL -8` - 80n )Q) B}rșT `UP Lr8 j  0 `Ӡ `" +  L B}+ +  LL|`"и+)I*+L  H hB} H h  H hL H HI h   {L  -B}`!  /   `!!H") h!`A AHA! hA!`H/B} ݍ  h j+ɛ q )P ) H^ qh @/    -B} 렊`J`)`1H0H `"K` P S E ̽B}̙͠ҍ )zE S +FG o *) aO    )B} L oS F GE LL;8+LL.B}LL+)*)    )  L    ɛЮ ЪH ,hL,B}AU ɛ ,U.    ɛU  ,P`%H$H`B}Ԍ/x`X` O>'ESPͽݤU̽HPJJJJ PH) h hT̼ H B} hRSR̿H) ` RJJJJ p hSH) SJJJJ h`/ԽTURSB}` `MӢ8ӌӢ<`0888888888888888888888888888B}888888888888888888888888888888888888888888888B}88888@(0&78v0w0υШȄ΢x̩0 L00 L0eТ D00 L00ϱ`ΥЅϥ Υ Θ Ѕ lF!} L  H  {hL -8` - 80n )Q) F"}rșT `UP Lr8 j  0 `Ӡ `" +  L F#}+荼 +  LL|`"и+)I*+L  H h̻F$} H h ̾ H hL H̽ HI h   {L  -F%}`!  /   `!!H") h!`A AHA! hA!`H/F&} ݍ  h j+ɛ q )P ) H^ qh @/    -F'} 렊`J`)`1H0H `"K` P S E ̽F(}̙͠ҍ )zE S +FG j *) aO    )F)} L jS F GE LL;9+LL/F*}LL+)*)    )  L    ɛЭ ЩH ,hL,F+}AU ɛ ,U.    ɛU  ,J`%H$HF,}`x`X` O>'ESPͽݤU̸HPJJJJ PH) h hT̷ H F-}hRSR̺H) ` RJJJJ p hS̿H) SJJJJ h`/ԽTURSF.}` `MӢ8ӌӢ<`0ԽTURSD]